package org.jtheque.films.view.impl.frames; /* * Copyright JTheque (Baptiste Wicht) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.jtheque.core.managers.Managers; import org.jtheque.core.managers.beans.IBeansManager; import org.jtheque.core.managers.error.JThequeError; import org.jtheque.core.managers.persistence.able.DataContainer; import org.jtheque.core.managers.view.impl.frame.abstraction.SwingDialogView; import org.jtheque.core.utils.ui.builders.JThequePanelBuilder; import org.jtheque.core.utils.ui.builders.PanelBuilder; import org.jtheque.films.view.able.ILendingsView; import org.jtheque.films.view.impl.actions.lendings.AcReturnCurrentFilm; import org.jtheque.films.view.impl.editors.DataCellEditor; import org.jtheque.films.view.impl.menus.JMenuBarLendings; import org.jtheque.films.view.impl.models.table.LendingsTableModel; import org.jtheque.primary.od.able.Person; import org.jtheque.utils.ui.GridBagUtils; import org.jdesktop.swingx.JXTable; import javax.swing.JTable; import javax.swing.ListSelectionModel; import java.awt.Container; import java.awt.Frame; import java.util.ArrayList; import java.util.Collection; /** * User interface to display lendings. * * @author Baptiste Wicht */ public final class LendingsView extends SwingDialogView implements ILendingsView { private static final long serialVersionUID = 6554684772063503187L; private LendingsTableModel model; private JXTable tableLendings; /** * Construct a new <code>JFrameLendings</code>. * * @param parent The parent frame. */ public LendingsView(Frame parent) { super(parent); build(); } /** * Build the view. */ private void build() { setJMenuBar(new JMenuBarLendings()); setTitleKey("lendings.view.title"); setContentPane(buildContentPane()); pack(); setLocationRelativeTo(getOwner()); } /** * Build the content pane. * * @return the content pane. */ private Container buildContentPane() { PanelBuilder builder = new JThequePanelBuilder(); model = new LendingsTableModel(); setTableHeader(); tableLendings = new JXTable(model); tableLendings.getColumn(1).setCellEditor(new DataCellEditor(Managers.getManager(IBeansManager.class).<DataContainer<Person>>getBean("filmsService"))); tableLendings.getColumn(2).setCellEditor(new DataCellEditor(Managers.getManager(IBeansManager.class).<DataContainer<Person>>getBean("borrowersService"))); tableLendings.getTableHeader().setReorderingAllowed(false); tableLendings.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); tableLendings.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); tableLendings.setColumnControlVisible(true); setIdColumnNotVisible(); tableLendings.packAll(); builder.addScrolled(tableLendings, builder.gbcSet(0, 0, GridBagUtils.BOTH, GridBagUtils.BASELINE_LEADING, 0, -1, 1.0, 1.0)); builder.addButtonBar(builder.gbcSet(0, 1, GridBagUtils.HORIZONTAL, 0, 0), new DisplayBeanViewAction("lendings.view.actions.lend", "lendFilmView"), new AcReturnCurrentFilm(), new CloseViewAction("generic.view.actions.cancel", this)); return builder.getPanel(); } @Override public Collection<Integer> getSelectedLendingsID() { Collection<Integer> lendings = new ArrayList<Integer>(tableLendings.getSelectedRowCount()); int[] rows = tableLendings.getSelectedRows(); if (rows.length > 0) { for (int row : rows) { lendings.add((Integer) model.getValueAt(tableLendings.convertRowIndexToModel(row), 0)); } } return lendings; } @Override public void refreshText() { super.refreshText(); setTableHeader(); setIdColumnNotVisible(); } /** * Set the table header. */ private void setTableHeader() { model.setHeader(new String[]{ getMessage("lendings.view.table.id"), getMessage("lendings.view.table.film"), getMessage("lendings.view.table.borrower"), getMessage("lendings.view.table.date")}); } /** * Specify that the column "ID" is not visible. */ private void setIdColumnNotVisible() { tableLendings.getColumnExt(getMessage("lendings.view.table.id")).setVisible(false); } @Override protected void validate(Collection<JThequeError> errors) { } }